package org.example.market.mapper;


import org.apache.ibatis.annotations.Param;

import org.example.market.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.Date;
import java.util.List;

@Mapper
public interface UserMapper {
    // 基础 CRUD 方法
    int insertUser(User user);
    int deleteUserById(Long id);
    int updateUser(User user);
    User getUserById(Long id);
    List<User> listAllUsers();

    // 根据用户编码和密码查询用户
    User login(@Param("userCode") String userCode, @Param("userPassword") String userPassword);

    // 修改用户密码
    int updatePassword(@Param("id") Long id, @Param("newPassword") String newPassword);


    // 业务扩展方法
    User getUserByCode(String userCode);
    List<User> getUsersByRole(Integer userRole);
    List<User> getUsersByStatus(Integer status);
    List<User> getUsersByBirthdayRange(Date startDate, Date endDate);


     User getByUserCode(String userCode);
    // 分页查询方法
    List<User> findByPage(
            @Param("currentPage") int currentPage,
            @Param("pageSize") int pageSize,
            @Param("userCode") String userCode,
            @Param("userName") String userName
    );


    // 统计符合条件的总记录数（用于计算总页数）
    int countByCondition(
            @Param("userCode") String userCode,
            @Param("userName") String userName
    );
}